<?php

declare(strict_types=1);

namespace Zms\Validate\Rule;

use Zms\Unit\Is;

class QqValidate extends RuleAbstract
{
    /**
     * 默认错误消息
     * 当输入值不是有效的QQ号码时返回的错误信息。
     * @var string
     */
    protected $_error = '{label}不是有效的QQ';

    /**
     * 验证QQ号码
     * 使用正则表达式验证输入值是否为有效的QQ号码。
     * QQ号码规则：以1-9开头，长度为5-13位数字。
     * @param mixed $value 输入值
     * @param string $label 验证名
     * @return bool 验证结果
     */
    public function validate($value, string $label = ''): bool
    {
        if ($value && is_string($value)) {
            if (Is::empty($value) && $this->_noSkipping === true) {
                $this->_value = $value;
                return true;
            }
            if (preg_match('/^[1-9][0-9]{4,12}$/', $value)) {
                $this->_value = $value;
                return true;
            }
        }
        $this->addError($this->_error, $label);
        return false;
    }
}
